package com.webchat.chat.model;

import com.webchat.chat.core.enums.PermissionType;
import com.webchat.chat.core.tools.BaseModel;

import javax.persistence.Column;
import javax.persistence.Transient;
import java.io.Serializable;
import java.util.List;

public class Permission extends BaseModel implements Serializable {
    /**
     * 代码
     */
    @Column(name = "CODE")
    private String code;

    /**
     * 排序
     */
    @Column(name = "SORT")
    private Integer sort;

    /**
     * 层级
     */
    @Column(name = "FLOOR")
    private Integer floor;

    /**
     * 图标
     */
    @Column(name = "ICON")
    private String icon;

    /**
     * 是否显示
     */
    @Column(name = "IS_DISPLAY")
    private Boolean isDisplay;

    /**
     * 父级权限ID
     */
    @Column(name = "PARENT_PERMISSION_ID")
    private String parentPermissionId;

    /**
     * 路径
     */
    @Column(name = "PATH")
    private String path;

    /**
     * 权限名
     */
    @Column(name = "PERMISSION_NAME")
    private String permissionName;

    /**
     * 权限类型(菜单/权限)
     */
    @Column(name = "PERMISSION_TYPE")
    private PermissionType permissionType;

    @Transient
    private List<Permission> children;

    public List<Permission> getChildren() {
        return children;
    }

    public void setChildren(List<Permission> children) {
        this.children = children;
    }

    /**
     * 获取代码
     *
     * @return CODE - 代码
     */
    public String getCode() {
        return code;
    }

    /**
     * 设置代码
     *
     * @param code 代码
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 获取排序
     *
     * @return SORT - 排序
     */
    public Integer getSort() {
        return sort;
    }

    /**
     * 设置排序
     *
     * @param sort 排序
     */
    public void setSort(Integer sort) {
        this.sort = sort;
    }

    /**
     * 获取层级
     *
     * @return FLOOR - 层级
     */
    public Integer getFloor() {
        return floor;
    }

    /**
     * 设置层级
     *
     * @param floor 层级
     */
    public void setFloor(Integer floor) {
        this.floor = floor;
    }

    /**
     * 获取图标
     *
     * @return ICON - 图标
     */
    public String getIcon() {
        return icon;
    }

    /**
     * 设置图标
     *
     * @param icon 图标
     */
    public void setIcon(String icon) {
        this.icon = icon;
    }

    /**
     * 获取是否显示
     *
     * @return IS_DISPLAY - 是否显示
     */
    public Boolean getIsDisplay() {
        return isDisplay;
    }

    /**
     * 设置是否显示
     *
     * @param isDisplay 是否显示
     */
    public void setIsDisplay(Boolean isDisplay) {
        this.isDisplay = isDisplay;
    }

    /**
     * 获取父级权限ID
     *
     * @return PARENT_PERMISSION_ID - 父级权限ID
     */
    public String getParentPermissionId() {
        return parentPermissionId;
    }

    /**
     * 设置父级权限ID
     *
     * @param parentPermissionId 父级权限ID
     */
    public void setParentPermissionId(String parentPermissionId) {
        this.parentPermissionId = parentPermissionId;
    }

    /**
     * 获取路径
     *
     * @return PATH - 路径
     */
    public String getPath() {
        return path;
    }

    /**
     * 设置路径
     *
     * @param path 路径
     */
    public void setPath(String path) {
        this.path = path;
    }

    /**
     * 获取权限名
     *
     * @return PERMISSION_NAME - 权限名
     */
    public String getPermissionName() {
        return permissionName;
    }

    /**
     * 设置权限名
     *
     * @param permissionName 权限名
     */
    public void setPermissionName(String permissionName) {
        this.permissionName = permissionName;
    }

    /**
     * 获取权限类型(菜单/权限)
     *
     * @return PERMISSION_TYPE - 权限类型(菜单/权限)
     */
    public PermissionType getPermissionType() {
        return permissionType;
    }

    /**
     * 设置权限类型(菜单/权限)
     *
     * @param permissionType 权限类型(菜单/权限)
     */
    public void setPermissionType(PermissionType permissionType) {
        this.permissionType = permissionType;
    }
}
